//package common.file;
//
//import com.fasterxml.jackson.databind.JsonNode;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import common.util.ListUtils;
//
//import java.io.ByteArrayInputStream;
//import java.io.IOException;
//import java.nio.file.*;
//import java.nio.file.attribute.BasicFileAttributes;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//import java.util.stream.Stream;
//
///**
// * @author zhang hao dong
// * @date 2025-03-24 15:42
// * 提取出window 某个文件夹下所有文件名
// */
//public class ExtractDirAllFileName {
//
//    public static List<String> listFilesInDirectory(String directoryPath) {
//        final List<String> fileNames = new ArrayList<>();
//
//        try {
//            Files.walkFileTree(Paths.get(directoryPath), new SimpleFileVisitor<Path>() {
//                @Override
//                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
//                    fileNames.add(file.getFileName().toString());
//                    return FileVisitResult.CONTINUE;
//                }
//            });
//        } catch (
//                IOException e) {
//            System.err.println("Error accessing files in directory: " + e.getMessage());
//        }
//
//        return fileNames;
//    }
//
//    public static void mkdirByNames(String rootDir, List<String> dirNames) {
//
//    }
//
//    public static void main(String[] args) {
//        List<String> names = Stream.of(
//                "李治",
//                "代江兴",
//                "刘彦",
//                "付凯帆",
//                "李婉琪",
//                "赵宁",
//                "赵子壮",
//                "陆嘉成",
//                "王文龙",
//                "姜宁",
//                "王炳",
//                "赵雪",
//                "王昊",
//                "徐利炜",
//                "张博豪",
//                "郑思佳",
//                "刘动",
//                "宗诚",
//                "蔡守晨",
//                "王建文",
//                "彭震",
//                "周雪超",
//                "王永飞",
//                "王悠",
//                "许胜恩",
//                "马艳涛",
//                "张齐",
//                "于海",
//                "闫文留",
//                "万云薇",
//                "马晓萌",
//                "黄世珠",
//                "邹剑",
//                "杨明",
//                "顾伟",
//                "甘志滨",
//                "崔磊",
//                "于安宁",
//                "步宪涛",
//                "王浩东",
//                "杨自然",
//                "刘玥霖",
//                "杨宗岺",
//                "宽彬",
//                "常国民",
//                "彭晶祥",
//                "程建阳",
//                "贾帅",
//                "熊启宇",
//                "孙寅生",
//                "董小龙",
//                "谭健明",
//                "谯仲兵",
//                "张晓晖",
//                "马可",
//                "陈靓",
//                "尹心",
//                "廖林杰",
//                "冀自逢",
//                "邱健锦",
//                "杨东旭",
//                "章东东",
//                "张敬秋",
//                "李妍君",
//                "陈白兰",
//                "颜享华",
//                "李红",
//                "黄莺",
//                "李昊阳",
//                "李东杰",
//                "高爽",
//                "尚亚瑞",
//                "师芳琳",
//                "尹文君",
//                "陈洋",
//                "刘婷",
//                "徐森",
//                "成云",
//                "黄志远",
//                "程江",
//                "朱旺涛",
//                "董飞",
//                "程凌峰",
//                "关铭",
//                "邬莱杰",
//                "喻星",
//                "周宁宁",
//                "邓巍",
//                "张建友",
//                "宋腾",
//                "李晓阳",
//                "邵飞龙",
//                "刘美玲",
//                "龙超华",
//                "陈龙",
//                "侯嘉欣").collect(Collectors.toList());
//        Map<String, Long> duplicates = names.stream()
//                .collect(Collectors.groupingBy(e -> e, Collectors.counting()))  // 分组并计数
//                .entrySet().stream()
//                .filter(entry -> entry.getValue() > 1)  // 过滤出出现次数大于1的元素
//                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));  // 收集结果
//        List<String> hasNames = new ArrayList<>();
//        Path dir = Paths.get("C:\\Users\\28020\\Desktop\\深圳征信-导出数据\\深圳征信数据\\样本二\\涉诉"); // 替换为你的目录路径
//        try {
//            Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
//                @Override
//                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
//                    if (file.toString().toLowerCase().endsWith(".json")) {
//                        // 获取文件名（不包含扩展名）作为新目录名
//                        String fileNameWithoutExt = file.getFileName().toString();
//                        int dotIndex = fileNameWithoutExt.lastIndexOf('.');
//                        String dirName = (dotIndex == -1) ? fileNameWithoutExt : fileNameWithoutExt.substring(0, dotIndex);
//                        hasNames.add(dirName);
//                        // 创建新目录路径
//                        Path newDir = dir.resolve(dirName);
//                        Files.createDirectories(newDir);
//
//                        // 定义目标文件的新名字
//                        String newName = dirName + "明细数据.json";
//                        Path targetFile = newDir.resolve(newName);
//                        Files.copy(file, targetFile, StandardCopyOption.REPLACE_EXISTING);
//
//                        String newCountName = dirName + "统计数据.json";
//                        Path targetCountFile = newDir.resolve(newCountName);
//                        ObjectMapper objectMapper = new ObjectMapper();
//                        JsonNode jsonNode = objectMapper.readTree(file.toFile());
//                        JsonNode countNode = jsonNode.path("data").path("data").path("count");
//                        byte[] bytes = objectMapper.writeValueAsBytes(countNode);
//                        Files.copy(new ByteArrayInputStream(bytes), targetCountFile, StandardCopyOption.REPLACE_EXISTING);
//
//                    }
//                    return FileVisitResult.CONTINUE;
//                }
//            });
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        List<String> diff = ListUtils.difference(names, hasNames);
//        System.out.println("Difference: " + diff);  // 输出: Difference: [apple, cherry]
//        System.out.println(names.toString());
//        System.out.println(hasNames.toString());
//
//    }
//}
